package com.cmf.exception;

import com.cmf.enums.ResultCodeType;
import lombok.Getter;


/**
 * 自定义业务异常类
 * 用于封装业务逻辑异常,便于统一异常处理
 */
@Getter
public class BusinessException extends RuntimeException {
    /**
     * 错误码
     * 用于标识具体的错误类型
     */
    private final ResultCodeType code;

    /**
     * 错误信息
     * 用于描述具体的错误内容
     */
    private final String message;

    /**
     * 带错误码和错误信息的构造函数
     * @param code 错误码
     * @param message 错误信息
     */
    public BusinessException(ResultCodeType code, String message) {
        super(message);
        this.code = code;
        this.message = message;
    }

    /**
     * 只带错误信息的构造函数,默认错误码为500
     * @param message 错误信息
     */
    public BusinessException(String message) {
        this(ResultCodeType.INTERNAL_SERVER_ERROR, message);
    }

    /**
     * 使用错误码枚举构造异常
     * @param errorCode 错误码枚举
     */
    public BusinessException(ResultCodeType errorCode) {
        this(errorCode, errorCode.getDesc());
    }
}